home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / PRG / MacPerl 506 appl folder.sit / MacPerl 506 appl folder / Mac_Perl_506r1m_appl / lib / Shell.pm < prev    next >
Text File  |  1995-03-20  |  819b  |  50 lines

  1. die "Shell.pm not (yet) implemented on the Mac";
  2.  
  3. package Shell;
  4.  
  5. sub import {
  6.     my $self = shift;
  7.     my ($callpack, $callfile, $callline) = caller;
  8.     my @EXPORT;
  9.     if (@_) {
  10.     @EXPORT = @_;
  11.     }
  12.     else {
  13.     @EXPORT = 'AUTOLOAD';
  14.     }
  15.     foreach $sym (@EXPORT) {
  16.         *{"${callpack}::$sym"} = ¥&{"Shell::$sym"};
  17.     }
  18. };
  19.  
  20. AUTOLOAD {
  21.     my $cmd = $AUTOLOAD;
  22.     $cmd =~ s/^.*:://;
  23.     eval qq {
  24.     sub $AUTOLOAD {
  25.         if (¥@_ < 2) {
  26.         `$cmd ¥@_`;
  27.         }
  28.         else {
  29.         open(SUBPROC, "-|")
  30.             or exec '$cmd', ¥@_
  31.             or die "Can't exec $cmd: ¥$!¥n";
  32.         if (wantarray) {
  33.             my ¥@ret = <SUBPROC>;
  34.             close SUBPROC;    # XXX Oughta use a destructor.
  35.             ¥@ret;
  36.         }
  37.         else {
  38.             local(¥$/) = undef;
  39.             my ¥$ret = <SUBPROC>;
  40.             close SUBPROC;
  41.             ¥$ret;
  42.         }
  43.         }
  44.     }
  45.     };
  46.     goto &$AUTOLOAD;
  47. }
  48.  
  49. 1;
  50.